package runtime

import (
	"gitee.com/shoyer/logger"
	"gitee.com/shoyer/service/config"
	"gitee.com/shoyer/util"
	jsoniter "github.com/json-iterator/go"
)

// 注意游戏中的逻辑不要依赖这些变量，这些是部署系统部署时才会调用并设置的值。本地开发的时候并不会有值
var (
	// OnlineStatus 0 正常，1准备下线
	OnlineStatus int

	// StartedAt 记录服务器启动时间
	StartedAt int64

	// IP 当前服务器公网IP
	IP string
)

func init() {
	StartedAt = util.GetTimestamp()
}

// SetOnlineStatus SetOnlineStatus
func SetOnlineStatus(status int) {
	OnlineStatus = status
}

// GetOnlineStatus GetOnlineStatus
func GetOnlineStatus() int {
	return OnlineStatus
}

// GetStartedAt GetStartedAt
func GetStartedAt() int64 {
	return StartedAt
}

// SetIP SetIP
func SetIP(ip string) {
	IP = ip
}

// GetRuntimeIP GetRuntimeIP
func GetRuntimeIP() string {
	return IP
}

// GetServerIP GetServerIP
func GetServerIP() string {
	if config.GetIP() != "" {
		return config.GetIP()
	}

	if GetRuntimeIP() != "" {
		return GetRuntimeIP()
	}

	return GetDetectIP()
}

// GetDetectIP GetDetectIP
func GetDetectIP() string {
	result, err := util.Get("http://ip.360.cn/IPShare/info")
	if err != nil {
		logger.Error(err.Error())
		return ""
	}

	parsedInfo := make(map[string]string, 0)
	jsoniter.Unmarshal([]byte(result), &parsedInfo)

	return parsedInfo["ip"]
}
